#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPaintEvent>
#include <QPainter>
#include <QImage>
#include <QPicture>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

//绘图 API 的使用, 一般不会在 QWidget (QMainWindow) 的构造函数中使用, 而是要放到 paintEvent 事件
//关于 paintEvent
//paintEvent 会在以下情况下被触发:
//• 控件首次创建.
//• 控件被遮挡, 再解除遮挡.
//• 窗口最小化, 再恢复.
//• 控件大小发生变化时.
//• 主动调用 repaint() 或者 update() 方法. (这两个方法都是 QWidget 的方法).
//因此, 如果把绘图 api 放到构造函数中调用, 那么一旦出现上述的情况, 界面的绘制效果就无法确保符合预期了.

    //声明绘画事件
    void paintEvent(QPaintEvent* event);

    void painterBasicTest();

    void QPenTest();

    void QPixmapTest();

    void QPainterSaveTest();

    void QPixmapCharacter();

    void QImage();

    void QPictureSave();

    void QPictureLoad();
private:
    Ui::MainWindow *ui;
    QPixmap pix;

};
#endif // MAINWINDOW_H
